package com.solution.service;

import java.util.List;

import com.solution.exception.ServiceBeanException;
import com.solution.model.SystemVariable;
import com.solution.util.SearchVO;


/**
 * This interface exposes all the services for creation, updation, read and
 * deletion of SystemVariable.
 * 
 *
 */
public interface SystemVariableService {

	/**
	 * This service creates the SystemVariable entry in the database after performing
	 * required business logic.
	 * @param systemVariable
	 * @return
	 * @throws ServiceBeanException
	 */
	public SystemVariable create(SystemVariable systemVariable) throws ServiceBeanException;
	
	/**
	 * This service creates the SystemVariable entry 
	 * @param systemVariable
	 * @return
	 * @throws ServiceBeanException
	 */
	
	public SystemVariable update(SystemVariable systemVariable) throws ServiceBeanException;
	
	/**
	 * Updates list of system variables
	 * @param systemVariableList
	 * @return
	 * @throws ServiceBeanException
	 */
	public int updateSystemVariables(List<SystemVariable> systemVariableList) throws ServiceBeanException;
	
	/**
	 * This service reads a SystemVariable from database based on the primary
	 * key.
	 * @param sysVariableName
	 * @return
	 * @throws ServiceBeanException
	 */
	public SystemVariable getValue(String sysVariableName, Long clientId) throws ServiceBeanException;
	
	/**
	 * This service fetches a list of SystemVariable based on a search criteria which can
	 * be set using various parameters of the systemVariable object.
	 * @param systemVariable
	 * @return
	 * @throws ServiceBeanException
	 */
	public List<SystemVariable> get(SearchVO searchVO) throws ServiceBeanException;
}
